#include <iostream>
#include <cstring>
using namespace std;
const int N=5*1e4+10;

int h[N],to[N],ne[N],idx;
int sum[N];
int st[N];
int ret;
void add(int x,int y)
{
	to[idx]=y;
	ne[idx]=h[x];
	h[x]=idx++;
}
int dfs(int u)
{
	st[u]=1;
	int d1=0,d2=0;
	int dist=0;
	for(int i=h[u];i!=-1;i=ne[i])
	{
		int j=to[i];
		if(!st[j])
		{
			int d=dfs(j);
			dist=max(dist,d);
			if(d>d1)
			{
				d2=d1;
				d1=d;
			}	
			else if(d>d2){
				d2=d;
			}
		}
	}
	
	ret=max(ret,d1+d2);
	return dist+1;
}
int main()
{
	int n;
	cin>>n;
	memset(h,-1,sizeof(h));
	for(int i=1;i<=n;i++)
	{
		for(int j=2;j<=n/i;j++)
		{
			sum[i*j]+=i;
		}
	}
	
	for(int i=2;i<=n;i++)
	{
		if(i>sum[i])
		{
			add(sum[i],i);
		}
	}
	for(int i=1;i<=n;i++)
	{
		if(!st[i])
		{
			dfs(i);
		}
	}
	cout<<ret<<endl;
	return 0;
}
